
/**
 * 把func函数放到为任务队列里执行
 * @param func 函数
 */
function runMicrotask(func) {
  // Promise方式
  if (typeof Promise === "function") {
    Promise.resolve().then(func);
    return;
  }
  // MutationObserver方式
  if (typeof window.MutationObserver === "function") {
    const ob = new MutationObserver(func);
    const node = document.createTextNode('');
    ob.observe(node, { characterData: true });
    node.data = 1;
    return;
  }
  // webapi queueMicrotask方式
  if (typeof queueMicrotask === "function") {
    queueMicrotask(func);
    return;
  }
  // node方式
  if (process && typeof process.nextTick === "function") {
    process.nextTick(func);
    return;
  }
}
